#version 460 core

layout ( location = 0 ) in vec3 aPos;
layout ( location = 1 ) in vec3 aNormal;
layout ( location = 2 ) in vec2 aTexCoords;

out vec3 FragPos;
out vec3 Normal;
out vec2 TexCoords;

uniform mat4 modelMat;
uniform mat3 normalMat;
uniform mat4 viewMat;
uniform mat4 projMat;

void main()
{
    Normal = normalMat * aNormal;
    FragPos = (modelMat * vec4(aPos, 1.0f)).xyz;
    TexCoords = aTexCoords;
    gl_Position = projMat * viewMat * modelMat * vec4(aPos, 1.0f);
}